<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>

<meta name="copyright" content="Copyright (c) Thales Corporate Services S.A.S, 2009. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
<meta name="author" content="Benoit Langlois" >
<meta name="keywords" content="domain-specific language, domain specific language, dsl"/>

<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">

<LINK REL="STYLESHEET" HREF="../book.css" CHARSET="ISO-8859-1" TYPE="text/css">
<title>DSL (Domain-Specific Language)</title>
</HEAD>
<BODY BGCOLOR="#ffffff">

<table border="0" cellpadding="2" cellspacing="0" width="100%">
  <tbody>
    <tr>
    	<td colspan="2" align="left" bgcolor="#0080c0" valign="top">
    	  <h2><font face="Arial,Helvetica"><font color="#ffffff">
    	  &nbsp;DSL (Domain-Specific Language)
    	  </font></font></h2>
    	</td>
    </tr>
	</tbody>
</table>


<a name="definition"><h2>Definition</h2></a>
<p class="Para">A DSL (Domain-Specific Language) is a specialized and problem-oriented language <a href="#[1]">[1]</a>.</p>
  
  
<a name="motivation"><h2>Motivation</h2></a>
<p class="Para">A DSL is a specialized and problem-oriented language <a href="#[1]">[1]</a>. Contrarily to a General Purpose Language (GPL) (e.g., UML, Java or C#), a DSL serves to accurately describe a domain of knowledge. The interest to combine a DSL and a transformation function is to raise the abstraction level of software. A DSL user concentrates her/his efforts on domain description while complexity, design and implementation decisions and details are hidden <a href="#[2]">[2]</a>. The result of the transformation, the solution, is a part of a software application that is integrated later in the development process. The stake with DSLs is to improve productivity and software quality <a href="#[2]">[2]</a>.</p>

<p align="center">
  <img src="./images/dslGlobalView.jpg" alt="DSL Global view"/>
</p>
<p align="center">
 <i>Figure 1. DSL Global view</i>
</p>

<a name="structure"><h2>Structure</h2></a>
<p class="Para">A DSL is a language formalized by a model. A DSL description, given by a user, is a model instance. An abstract syntax corresponds to the DSL model and is independent of any representation (e.g., textual, graphical representation). On the contrary, a concrete syntax is the abstract syntax represented in a human-usable language (e.g., textual, graphical, tabular). As a consequence, a DSL viewpoint (where DSL descriptions are located) contains for every DSL description i) at least a model that conforms to the abstract syntax of the DSL, ii) different representations of the same DSL description.</p>

<p align="center">
  <img src="./images/dslStructure.jpg" alt="DSL structure"/>
</p>
<p align="center">
  <i>Figure 2. DSL structure</i>
</p>


<br>

<dl>
  <dt><a name="[1]">[1]</a> Czarnecki, K., and Eisenecker, U.W., <i>Generative Programming</i>, Addison-Wesley, 2000.</dt>
  <dt><a name="[2]">[2]</a> S&aacute;nchez-Ru&iacute;z, A., Saeki, M., Langlois, B., Paiano, R., <i>Domain-Specific Software Development Terminology : Do we All Speak the Same Language?</i>, Proceeding of the 7th OOPSLA Workshop on Domain-Specific Modeling, 2007.</dt>
  <dt><a name="[3]">[3]</a> Stahl, T., Volter, M., Bettin, J., Haase, A., Helsen, S., <i>Model-Driven Software Development</i>, Wiley, 2006.</dt>
</dl>
 

</body>
</html>
